home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1998 July / EnigmA AMIGA RUN 29 (1998)(G.R. Edizioni)(IT)[!][issue 1998-07 & 08].iso / earcd / phase5 / lha-ppc / src / slidehuf.h < prev    next >
C/C++ Source or Header  |  1997-12-04  |  4KB  |  140 lines

  1. /*
  2.  * slidehuf.h -- part of LHa for UNIX
  3.  *
  4.  *    modified: Feb. 26, 1992, Masaru Oki.
  5.  */
  6.  
  7. #include <stdio.h>
  8. #include <errno.h>
  9.  
  10. #if defined(__STDC__) || defined(AIX)
  11. #include <limits.h>
  12. #else
  13. #ifndef CHAR_BIT
  14. #define CHAR_BIT  8
  15. #endif
  16. #ifndef UCHAR_MAX
  17. #define UCHAR_MAX ((1<<(sizeof(unsigned char)*8))-1)
  18. #endif
  19. #ifndef USHRT_MAX
  20. #define USHRT_MAX ((1<<(sizeof(unsigned short)*8))-1)
  21. #endif
  22. #ifndef SHRT_MAX
  23. #define SHRT_MAX ((1<<(sizeof(short)*8-1))-1)
  24. #endif
  25. #ifndef SHRT_MIN
  26. #define SHRT_MIN (SHRT_MAX-USHRT_MAX)
  27. #endif
  28. #endif /* not __STDC__ */
  29. #include "lharc.h"
  30.  
  31. /* #include "errmes.h" */
  32. /* Your C-Compiler has no 'void' (from lharc.h) */
  33. #if !defined(__STDC__) && !defined(AIX)  /* NO_VOID */
  34. #define void
  35. #endif
  36.  
  37. struct encode_option {
  38.     void (*output)(int, int);
  39.     void (*encode_start)(void);
  40.     void (*encode_end)(void);
  41. };
  42.  
  43. struct decode_option {
  44.     unsigned short (*decode_c)(void);
  45.     unsigned short (*decode_p)(void);
  46.     void (*decode_start)(void);
  47. };
  48.  
  49. /* from slide.c */
  50. #define MAX_DICBIT    13 
  51. #define MAX_DICSIZ (1 << MAX_DICBIT)
  52. #define MATCHBIT   8    /* bits for MAXMATCH - THRESHOLD */
  53. #define MAXMATCH 256    /* formerly F (not more than UCHAR_MAX + 1) */
  54. #define THRESHOLD  3    /* choose optimal value */
  55.  
  56. extern int errno;
  57. extern int unpackable;
  58. extern unsigned long origsize, compsize;
  59. extern unsigned short dicbit;
  60. extern unsigned short maxmatch;
  61. extern unsigned long count;
  62. extern unsigned short loc;
  63. extern unsigned char *text;
  64.  
  65. /* from huf.c */
  66. #define NC (UCHAR_MAX + MAXMATCH + 2 - THRESHOLD)
  67.             /* alphabet = {0, 1, 2, ..., NC - 1} */
  68. #define CBIT 9  /* $\lfloor \log_2 NC \rfloor + 1$ */
  69. #define USHRT_BIT 16    /* (CHAR_BIT * sizeof(ushort)) */
  70.  
  71. extern unsigned short    left[], right[];
  72. extern unsigned char    c_len[], pt_len[];
  73. extern unsigned short    c_freq[], c_table[], c_code[],
  74.             p_freq[], pt_table[], pt_code[],
  75.             t_freq[];
  76.  
  77. extern void output_st1();
  78. extern unsigned char *alloc_buf(void);
  79. extern void encode_start_st1(void);
  80. extern void encode_end_st1(void);
  81. extern unsigned short decode_c_st1(void);
  82. extern unsigned short decode_p_st1(void);
  83. extern void decode_start_st1(void);
  84.  
  85. /* from shuf.c */
  86. extern void decode_start_st0(void);
  87. extern void encode_p_st0(unsigned short j);
  88. extern void encode_start_fix(void);
  89. extern void decode_start_fix(void);
  90. extern unsigned short decode_c_st0(void);
  91. extern unsigned short decode_p_st0(void);
  92.  
  93. /* from dhuf.c */
  94. extern unsigned int n_max;
  95.  
  96. extern void start_c_dyn(void);
  97. extern void decode_start_dyn(void);
  98. extern unsigned short decode_c_dyn(void);
  99. extern unsigned short decode_p_dyn(void);
  100. extern void output_dyn(int code, unsigned int pos);
  101. extern void encode_end_dyn(void);
  102.  
  103. /* from larc.c */
  104. extern unsigned short decode_c_lzs(void);
  105. extern unsigned short decode_p_lzs(void);
  106. extern unsigned short decode_c_lz5(void);
  107. extern unsigned short decode_p_lz5(void);
  108. extern void decode_start_lzs(void);
  109. extern void decode_start_lz5(void);
  110.  
  111. /* from maketbl.c */
  112. /* void make_table(short nchar, uchar bitlen[],
  113.            short tablebits, ushort table[]); */
  114. extern void make_table(/*int nchar, uchar bitlen[],
  115.              int tablebits, ushort table[]*/);
  116.  
  117. /* from maketree.c */
  118. /* void make_code(short n, uchar len[], ushort code[]);
  119. short make_tree(short nparm, ushort freqparm[], 
  120.                 uchar lenparm[], ushort codeparam[]); */
  121. extern void make_code(/*int n, uchar len[], ushort code[]*/);
  122. extern short make_tree(/*int nparm, ushort freqparm[], 
  123.              uchar lenparm[], ushort codeparam[]*/);
  124.  
  125. /* from crcio.c */
  126. extern FILE *infile, *outfile;
  127. extern unsigned short crc, bitbuf;
  128. extern int dispflg;
  129.  
  130. extern void make_crctable(void);
  131. extern unsigned short calccrc(/*uchar *p, uint n*/);
  132. extern void fillbuf(/*uchar n*/);
  133. extern unsigned short getbits(/*uchar n*/);
  134. extern void putcode(/*uchar n, ushort x*/);
  135. extern void putbits(/*uchar n, ushort x*/);
  136. extern int fread_crc(/*uchar *p, int n, FILE *f*/);
  137. extern void fwrite_crc(/*uchar *p, int n, FILE *f*/);
  138. extern void init_getbits(void);
  139. extern void init_putbits(void);
  140.